export function isEmpty(value : any) : boolean {
    if(value === null || value === undefined || value === '') {
        return true;
    }
    return false;
}



/**
 * 判断是否为外部链接
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path: string) {
    return /^(https?:|mailto:|tel:)/.test(path)
}


/**
 * 从路径中提取第一个参数（不包含前导斜杠）
 * @param {string} path - 输入的路径字符串，例如 "/system/workbench"
 * @returns {string} 提取的第一个参数，例如 "system"
 */
export function getFirstPathParam(path: string) {
    // 移除前导斜杠
    const cleanPath = path.startsWith('/') ? path.slice(1) : path;
    
    // 如果路径为空，直接返回空字符串
    if (!cleanPath) return '';
    
    // 使用斜杠分割路径并获取第一个部分
    const parts = cleanPath.split('/');
    return parts[0] || '';
}


/**
 * 查找完整路径
 * @param {Array} menuList - 菜单列表
 * @param {string} targetPath - 目标路径
 * @returns {string} 完整路径
 */
export function findFullPath(menuList: any[], targetPath: string) {
    // 移除目标路径的前导斜杠，并分割路径
    const normalizedTargetPath = targetPath.startsWith('/') ? targetPath.slice(1) : targetPath;
    const pathSegments = normalizedTargetPath.split('/').filter(Boolean);
    let fullPath: string | null = null;

    function traverse(items: any[], parentPath: string = '') {
        for (const item of items) {
            // 处理当前项的路径，移除前导斜杠
            const currentItemPath = item.path.startsWith('/') ? item.path.slice(1) : item.path;
            const currentPath = parentPath ? `${parentPath}/${currentItemPath}` : currentItemPath;
            
            // 检查当前路径是否匹配目标路径
            if (currentPath === normalizedTargetPath) {
                fullPath = `/${currentPath}`;
                return true;
            }

            // 检查当前路径是否以目标路径结尾
            if (currentPath.endsWith(normalizedTargetPath)) {
                fullPath = `/${currentPath}`;
                return true;
            }
            
            // 如果有子菜单，继续遍历
            if (item.children && item.children.length > 0) {
                if (traverse(item.children, currentPath)) {
                    return true;
                }
            }
        }
        return false;
    }

    traverse(menuList);
    return fullPath;
}

    
/**
 * 分割路径
 * @param {string} pathStr - 路径字符串
 * @returns {string[]} 分割后的路径数组
 */
export function splitPath(pathStr: string) {
    // 去掉开头的斜杠
    const cleanPath = pathStr.startsWith('/') ? pathStr.slice(1) : pathStr;
    // 使用斜杠分割路径并过滤空字符串
    return cleanPath.split('/').filter(segment => segment !== '');
}